package dkffkd23.basic;

public class J07_SungJuk_v4 {

	public static void main(String[] args) {
		// 객체지향 기법을 이용해서 성적처리 프로그램 작성

		SungJuk Sungj = new SungJuk();
		Sungj.name = "지현";
		Sungj.kor = 98;
		Sungj.eng = 45;
		Sungj.mat = 78;

		// 초기화가 불편- 생성자를 이용하자.
		Sungj = new SungJuk("수지", 45, 23, 98);
		// 에러가 나는 이유는 밑에 멤버변수에 양식과 맞지 않아서 그럼.
		// new SungJuk인스턴트화 할때 ("수지",45,23,98) 괄호의 내용을 초기값으로 보낸다.

		System.out.println(Sungj.name);
		System.out.println(Sungj.kor);
		System.out.println(Sungj.eng);
		System.out.println(Sungj.mat);
		System.out.println(Sungj.getTotal());
		System.out.println(Sungj.getAverage());
		Sungj.getGrade(); //<==void형 메서드 호출!
		System.out.println(Sungj.gra);
//		System.out.println(Sungj.getGrade()); <=--이 형태로는 사용할 수 없음.
		


	}// 메인

}// 클래스

//성적데이터 : 이름, 국어, 영어, 수학, 총점, 평균, 학점
//성적메서드 : 총점 구하기, 평균 구하기, 학점 구하기, 결과출력

class SungJuk {

	String name;
	int kor;
	int eng;
	int mat;
	int tot;
	double avg;
	char gra;

	public SungJuk() {
	}// 기본생성자

	public SungJuk(String name, int kor, int eng, int mat) { // 사용자 정의 생성자
		// 받는 쪽도 보내는 쪽과 같은 순서로 변수가 지정되어 있어야 한다.
		this.name = name;
		this.kor = kor;
		this.eng = eng;
		this.mat = mat;
		
		//this 접두사는 클래스의 멤버변수를 가리킴
		//만일 기본생성자 없이 사용자 정의 생성자만 만든다면?

		
	}//사용자 정의 생성자

	//메서드 정의
/*	void getTotal(){// void는 값을 반환해 주지 않는다.
		tot=kor+eng+mat;
	}
	
	void getAverage(){
		avg=(kor+eng+mat)/3;
	}
	void getGrade(){
		switch((int)((kor+eng+mat)/3)){
		case 10: case 9: gra = '수';
		break;
		case 8: gra = '우';
		case 7: gra = '미';
		case 6: gra = '양';
		case 5: gra = '가';
		
		}*/
	//메서드의 반환값 유형을 무조건 void로 지정
	int getTotal(){
		tot=kor+eng+mat;
		return tot;
	}
	
	double getAverage(){
		//int imsi=getTotal();
		//avg=imsi/3;
		avg=getTotal()/3;
		return avg;
	}
	char getGrade(){
		switch((int)getAverage()){
		case 10: case 9: gra = '수';
		break;
		case 8: gra = '우';
		break;
		case 7: gra = '미';
		break;
		case 6: gra = '양';
		break;
		default : gra= '가';
		}// 메서드의 반환값 유형을 결과값의 종류에 따라 지정
		return gra;
	}
	
}
